// 加载环境变量配置（从.env文件）
require('dotenv').config()

// 引入所需模块
const express = require('express') // Express框架
const bodyParser = require('body-parser') // 请求体解析中间件
const cors = require('cors') // 跨域资源共享中间件
const cleanOrphanFiles = require('./utils/fileCleaner') // 孤立文件清理工具
const multer = require('multer') // 引入multer模块
// 初始化Express应用实例
const app = express()

/****************** 中间件配置 ******************/
app.use(bodyParser.json()) // 解析JSON格式的请求体
app.use(cors()) // 启用跨域请求支持
app.use('/uploads', express.static('uploads')) // 静态文件服务，暴露uploads目录

/****************** 数据库连接 ******************/
const connectDB = require('./config/db')
connectDB()

/****************** 路由配置 ******************/
app.use('/', require('./routes/index')) // 移除根路由的authMiddleware
// app.use('/cases', require('./routes/cases')) // 案例相关路由
// app.use('/students', require('./routes/students')) // 学员管理路由
// app.use('/about', require('./routes/about')) // 关于页面路由
app.use('/files', require('./routes/files')) // 文件管理路由
app.use('/mentorship', require('./routes/mentorship')) // 企业家指导路由
app.use('/employment', require('./routes/employment')) // 就业指导路由
app.use('/education', require('./routes/education')) // 学历指导路由
app.use('/projects', require('./routes/project')) // 项目指导路由
app.use('/currentProjects', require('./routes/currentProject')) // 当前项目路由
app.use('/entrepreneur', require('./routes/entrepreneur')) // 企业家信息路由
app.use('/aboutUs', require('./routes/aboutUs')) // 关于我们信息路由
app.use('/auth', require('./routes/auth')) // auth路由不需要全局中间件

// 在路由之后添加错误处理
app.use((err, req, res, next) => {
  if (err instanceof multer.MulterError) {
    // 专门处理Multer错误
    return res.status(413).json({
      code: 'FILE_UPLOAD_ERROR',
      message: err.code === 'LIMIT_FILE_SIZE' ? '文件大小超过限制（最大10MB）' : '文件上传失败'
    })
  }
})
/****************** 定时任务配置 ******************/
// const cleanupInterval = 5 * 60 * 1000 // 间隔5分钟
const cleanupInterval = 24 * 60 * 60 * 1000 // 24小时间隔（毫秒）
setInterval(() => {
  console.log('开始清理孤立文件...')
  cleanOrphanFiles() // 执行文件清理任务
}, cleanupInterval)

/****************** 服务器启动 ******************/
const PORT = process.env.PORT || 3000 // 从环境变量获取端口或使用默认3000
app.listen(PORT, () => console.log(`Server running on port ${PORT}`)) // 启动HTTP服务器
